home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / pascal / csdudes.exe / CSPERSON.CPP < prev    next >
Text File  |  1992-06-25  |  12KB  |  418 lines

  1. // Personnell DataBase
  2. // (C) Copyright 1992 Campbell Soup Company by Andrew Frantz
  3. // CSPERSON.CPP
  4. // contains the dialog and paradox engine source for person.db
  5. //    CIS --- 70712,3547
  6. // ====================================================================
  7. #include "csdudes.hpp"
  8. // ====================================================================
  9. void PXPerson::PXPerson()
  10. {
  11.     // The first PX data class must also initialize the engine
  12.     int err;
  13.     char *name = getenv("S_USER");
  14.  
  15.     if((err = PXNetInit((char *) PDOXNETPATH, OTHERNET, name)) != PXSUCCESS)
  16. //    if((err = PXInit()) != PXSUCCESS)
  17.     {
  18.         cerr << PXErrMsg(err) << endl;
  19.         cerr << "Hit a Key" << endl;
  20.         getch();
  21.         exit(0);
  22.     }
  23.     char path[80];
  24.     strcpy(path, (char *) DATAPATH);
  25.     strcat(path, "\\");
  26.     strcat(path, "PERSON");
  27.  
  28.     if((err = open(path, NULL)) != PXSUCCESS)
  29.     {
  30.         cerr << PXErrMsg(err) << endl;
  31.         cerr << "Hit a Key" << endl;
  32.         getch();
  33.         exit(0);
  34.     }
  35.     InitFields();
  36.     if(recfirst())
  37.     {
  38.         cerr << "Error getting first record" << endl;
  39.         cerr << "Hit a Key" << endl;
  40.         getch();
  41.         exit(0);
  42.     }
  43. }
  44. // =====================================================================
  45. int PXPerson::InitFields()
  46. {
  47.     int   i = 0;
  48.  
  49.     fldptr [i++] = &LastName;
  50.     fldptr [i++] = &FirstName;
  51.     fldptr [i++] = &UserName;
  52.     fldptr [i++] = &Address1;
  53.     fldptr [i++] = &Address2;
  54.     fldptr [i++] = &City;
  55.     fldptr [i++] = &State;
  56.     fldptr [i++] = &Zip;
  57.     fldptr [i++] = &Ext;
  58.     fldptr [i++] = &HomePhone;
  59.     fldptr [i++] = &CostCtr;
  60.     fldptr [i++] = &Group;
  61.     fldptr [i] = NULL;
  62.  
  63.     LastName.setinfo(*this, "LastName");
  64.     FirstName.setinfo(*this, "FirstName");
  65.     UserName.setinfo(*this, "UserName");
  66.     Address1.setinfo(*this, "Address1");
  67.     Address2.setinfo(*this, "Address2");
  68.     City.setinfo(*this, "City");
  69.     State.setinfo(*this, "State");
  70.     Zip.setinfo(*this, "Zip");
  71.     Ext.setinfo(*this, "Ext");
  72.     HomePhone.setinfo(*this, "HomePhone");
  73.     CostCtr.setinfo(*this, "CostCtr");
  74.     Group.setinfo(*this, "Group");
  75.  
  76.     return (PXSUCCESS);
  77. }
  78. // =====================================================================
  79. void PXPerson::AddRecord(PersonXferBuffer *data)
  80. {
  81.     LastName        =    data->LastName;
  82.     FirstName    =    data->FirstName;
  83.     UserName        =    data->UserName;
  84.     Address1        =    data->Address1;
  85.     Address2        =    data->Address2;
  86.     City            =    data->City;
  87.     State            =    data->State;
  88.     Zip            =    data->Zip;
  89.     Ext            =    data->Ext;
  90.     HomePhone    =    data->HomePhone;
  91.     CostCtr        =    data->CostCtr;
  92.     Group            =    data->Group;
  93.  
  94.     int err;
  95.     if((err = recappend()) != PXSUCCESS)
  96.     {
  97.         messageBox(PXErrMsg(err), mfError);
  98.     }
  99. }
  100. // =====================================================================
  101. void PXPerson::ChangeRecord(PersonXferBuffer *data)
  102. {
  103.     LastName        =    data->LastName;
  104.     FirstName    =    data->FirstName;
  105.     UserName        =    data->UserName;
  106.     Address1        =    data->Address1;
  107.     Address2        =    data->Address2;
  108.     City            =    data->City;
  109.     State            =    data->State;
  110.     Zip            =    data->Zip;
  111.     Ext            =    data->Ext;
  112.     HomePhone    =    data->HomePhone;
  113.     CostCtr        =    data->CostCtr;
  114.     Group            =    data->Group;
  115.  
  116.     recupdate();            // error handling done in recupdate()
  117. }
  118. // =====================================================================
  119. //void PXPerson::FindRecord(PersonXferBuffer *data)
  120. int PXPerson::FindRecord(char *data)
  121. {
  122.     int err;
  123.  
  124.     err = LastName.search(data, SEARCHFIRST);
  125.     
  126.     return(err);
  127. }
  128. // =====================================================================
  129. PersonXferBuffer PXPerson::DisplayRecord()
  130. {
  131.     PersonXferBuffer data;
  132.  
  133.     recget();
  134.  
  135.     LastName.get();
  136.     FirstName.get();
  137.     UserName.get();
  138.     Address1.get();
  139.     Address2.get();
  140.     City.get();
  141.     State.get();
  142.     Zip.get();
  143.     Ext.get();
  144.     HomePhone.get();
  145.     CostCtr.get();
  146.     Group.get();
  147.  
  148.     strncpy(data.LastName, LastName, sizeof(data.LastName));
  149.     strncpy(data.FirstName, FirstName, sizeof(data.FirstName));
  150.     strncpy(data.UserName, UserName, sizeof(data.UserName));
  151.     strncpy(data.Address1, Address1, sizeof(data.Address1));
  152.     strncpy(data.Address2, Address2, sizeof(data.Address2));
  153.     strncpy(data.City, City, sizeof(data.City));
  154.     strncpy(data.State, State, sizeof(data.State));
  155.     strncpy(data.Zip, Zip, sizeof(data.Zip));
  156.     strncpy(data.Ext, Ext, sizeof(data.Ext));
  157.  
  158.     strncpy(data.HomePhone, HomePhone, sizeof(data.HomePhone));
  159.     strncpy(data.CostCtr, CostCtr, sizeof(data.CostCtr));
  160.     data.Group = Group;
  161.  
  162.     return(data);
  163. }
  164. // ====================================================================
  165. TPersonDlg::TPersonDlg(const char *title, int type)
  166.     :    TDialog(  TRect( 0, 0, 80, 23), title ),
  167.         TWindowInit(&TPersonDlg::initFrame)
  168. {
  169.     DlgType=type;
  170.  
  171.     // initialize the struct to 0
  172.     cmClear();  // init dlg structs
  173.  
  174.     insert(new TInputLine(TRect(16,2,34,3), 16));
  175.     insert(new TInputLine(TRect(36,2,54,3), 16));
  176.     insert(new TInputLine(TRect(16,4,31,5), 13));
  177.     insert(new TInputLine(TRect(47,4,53,5), 4));
  178.     insert(new TInputLine(TRect(16,6,44,7), 26));
  179.     insert(new TInputLine(TRect(16,8,44,9), 26));
  180.     insert(new TInputLine(TRect(21,10,44,11), 21));
  181.     insert(new TInputLine(TRect(46,10,51,11), 3));
  182.     insert(new TInputLine(TRect(52,10,65,11), 11));
  183.     insert(new TInputLine(TRect(21,12,28,13), 5));
  184.     insert(new TInputLine(TRect(17,14,32,15), 13));
  185.     TView *control = new TRadioButtons(TRect(60,14,79,18),
  186.         new TSItem("Eng Sys",
  187.         new TSItem("Utilities",
  188.         new TSItem("Real Estate",
  189.         new TSItem("Environmental",0)))));
  190.     ushort value;
  191.     value = 0;
  192.     ((TCluster*)control)->setData(&value);
  193.     insert(control);
  194.  
  195.     insert(new TButton(TRect(55,4,60,6), "*", cmDisplayTheList, bfBroadcast | bfNormal));
  196.     insert(new TStaticText(TRect(3,2,14,3), "Last, First"));
  197.     insert(new TStaticText(TRect(34,2,35,3), ","));
  198.     insert(new TStaticText(TRect(6,4,14,5), "UserName"));
  199.     insert(new TStaticText(TRect(38,4,45,5), "CostCtr"));
  200.     insert(new TStaticText(TRect(5,6,14,7), "Address 1"));
  201.     insert(new TStaticText(TRect(5,8,14,9), "Address 2"));
  202.     insert(new TStaticText(TRect(2,10,18,11), "City, State, Zip"));
  203.     insert(new TStaticText(TRect(9,12,18,13), "Extension"));
  204.     insert(new TStaticText(TRect(8,14,13,15), "Phone"));
  205.     insert(new TStaticText(TRect(67,13,72,14), "Group"));
  206.     insert(new TStaticText(TRect(44,10,45,11), ","));
  207.     insert(new TStaticText(TRect(51,10,52,11), ","));
  208.  
  209.     switch(type)
  210.     {
  211.         case AddDlg:
  212.             insert( new TButton(TRect(3,16,13,18), "~A~dd", cmAddRec, bfDefault | bfBroadcast));
  213.             insert(new TButton(TRect(15,16,25,18), "~C~lear", cmClearRec, bfNormal | bfBroadcast));
  214.             break;
  215.         case EditDlg:
  216.             insert(new TButton(TRect(3,16,13,18), "~F~ind", cmFindRec, bfDefault | bfBroadcast));
  217.             insert(new TButton(TRect(15,16,25,18), "~C~hange", cmChangeRec, bfNormal | bfBroadcast));
  218.             insert(new TButton(TRect(28,16,40,18), "~D~elete", cmDeleteRec, bfNormal | bfBroadcast));
  219.             insert(new TButton(TRect(3,19,13,21), "~N~ext", cmNextRec, bfNormal | bfBroadcast));
  220.             insert(new TButton(TRect(15,19,25,21), "~P~rev", cmPrevRec, bfNormal | bfBroadcast));
  221.             insert(new TButton(TRect(28,19,39,21), "Fi~r~st", cmFirstRec, bfNormal | bfBroadcast));
  222.             insert(new TButton(TRect(41,19,51,21), "~L~ast", cmLastRec, bfNormal | bfBroadcast));
  223.             setDlgStructs();
  224.             break;
  225.         default:
  226.             break;
  227.     }
  228.     selectNext(False);
  229. }
  230. // =====================================================================
  231. void TPersonDlg::handleEvent(TEvent& event)
  232. {
  233.     TDialog::handleEvent(event);
  234.     if( event.what == evBroadcast )
  235.     {
  236.         switch( event.message.command )
  237.         {
  238.             case cmInterView:
  239.                 cmListItemSelect((char *) event.message.infoPtr);
  240.                 break;            
  241.             case cmDisplayTheList:
  242.                 TCCListDlg *pd = new TCCListDlg(TRect(0,0,50,14),"Cost Centers");
  243.                 //if (::validView(pd) != 0)
  244.                 //{
  245.                     TPersonnellApp::deskTop->execView(pd);
  246.                     destroy(pd);
  247.                 //}
  248.             // cmDisplayList();
  249.                 break;
  250.             case cmAddRec:
  251.                 cmAdd();
  252.                 break;
  253.             case cmClearRec:
  254.                 cmClear();
  255.                 break;
  256.             case cmFirstRec:
  257.                 cmFirst();
  258.                 break;
  259.             case cmPrevRec:
  260.                 cmPrev();
  261.                 break;
  262.             case cmLastRec:
  263.                 cmLast();
  264.                 break;
  265.             case cmNextRec:
  266.                 cmNext();
  267.                 break;
  268.             case cmChangeRec:
  269.                 cmChange();
  270.                 break;
  271.             case cmDeleteRec:
  272.                 cmDelete();
  273.                 break;
  274.             case cmFindRec:
  275.                 cmFind();
  276.                 break;
  277.             c